package cn.zqy.demo2.day12FunctionalInterface.FunctionalInterface;

/*
    函数式接口的使用:一般可以作为方法的参数和返回值类型
 */

public class Demo02FunctionalInterTest {
    //定义一个方法,参数使用函数式接口Demo01FunctionalInter
    public static void show(Demo01FunctionalInter inter) {
        inter.method();
    }

    public static void main(String[] args) {
        // 1.方法的参数是一个接口,所以可以传递接口的实现类对象
        show(new Demo01FunctionalInterImpl());
        // 2.方法的参数是一个接口,所以我们可以传递接口的匿名内部类
        show(new Demo01FunctionalInter() {
            @Override
            public void method() {
                System.out.println("使用匿名内部类重写接口中的抽象方法");
            }
        });

        //3.调用show方法,方法的参数是一个函数式接口,所以我们可以Lambda表达式
        show(() -> System.out.println("使用Lambda表达式重写接口中的抽象方法"));
    }
}
